Package nz.ac.massey.softwarec.group3.reverseAJAX

Source Code of nz.ac.massey.softwarec.group3.reverseAJAX.ReverseAJAXManager

/*
New Scotland Yard is an online multiplayer adaptation
of the boardgame  "Scotland Yard". Copyright (C) 2011 
Massey University Software C Group 3

This program is free software: you can redistribute it
and/or modify it under the terms of the GNU General
Public License as published by the Free Software
Foundation, either version 3 of the License, or (at
your option) any later version.

This program is distributed in the hope that it will
be useful, but WITHOUT ANY WARRANTY; without even the
implied warranty of MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE. See the GNU General Public
License for more details.

You should have received a copy of the GNU General
Public License along with this program.  If not, see
<http://www.gnu.org/licenses/>.
*/

package nz.ac.massey.softwarec.group3.reverseAJAX;

import java.util.*;
import java.util.concurrent.*;
import org.directwebremoting.Browser;
import org.directwebremoting.ScriptSessions;
import org.directwebremoting.impl.DaemonThreadFactory;
import org.directwebremoting.ui.dwr.Util;

/**
* ReverseAJAXManager - Singleton class which manages all the ReverseAJAXCalls.
* @version 1.0 Release
* @since 1.0
* @authors Natalie Eustace | Wanting Huang | Paul Smith | Craig Spence
*/
public final class ReverseAJAXManager implements ReverseAJAXManagerInterface
{
    private List<ReverseAJAXCall> reverseAJAXCalls = new ArrayList<ReverseAJAXCall>();
    private static ReverseAJAXManager reverseAJAXManager;
   
    /**
     * Private constructor for Singleton pattern.
     */
    private ReverseAJAXManager() {
        final ScheduledThreadPoolExecutor executor = new ScheduledThreadPoolExecutor(1, new DaemonThreadFactory());
        executor.scheduleAtFixedRate(new ReverseAJAXThread(), 1, 100, TimeUnit.MILLISECONDS);
    }

    /**
     * Method which returns the only instance of ReverseAJAXManager, and creates one if it doesn't exist.
     * @return ReverseAJAXManager reverseAJAXManager - The single instance of ReverseAJAXManager
     */
    public static ReverseAJAXManager getReverseAJAXManager() {
        if (reverseAJAXManager == null) {
            reverseAJAXManager = new ReverseAJAXManager();
        }
        return reverseAJAXManager;
    }
  
    /*
     * Method to perform a ReverseAJAXCall with a certain output, on an element of a page.
     * @param ReverseAJAXCall call - The call to be performed across all browsers on a given page.
     */
    @Override
    public void performReverseAJAXCall(final ReverseAJAXCall call) {
        if (call.getFilter() == null) {
            if (call.getFunction() == null) {
                Browser.withPage(call.getPage(), new Runnable() {
                    @Override
                    public void run()
                    {
                        Util.setValue(call.getElement(), call.getOutput());
                    }
                });
            }
            else {
                Browser.withPage(call.getPage(), new Runnable() {
                    @Override
                    public void run() {
                        ScriptSessions.addFunctionCall(call.getFunction(), call.getParams());
                    }
                });
            }
        } else {
            if (call.getFunction() == null) {
                Browser.withPageFiltered(call.getPage(), call.getFilter(), new Runnable() {
                    @Override
                    public void run() {
                        Util.setValue(call.getElement(), call.getOutput());
                    }
                });
            } else {
                Browser.withPageFiltered(call.getPage(), call.getFilter(), new Runnable() {
                   @Override
                   public void run() {
                       ScriptSessions.addFunctionCall(call.getFunction(), call.getParams());
                   }
                });
            }
        }
        reverseAJAXCalls = new ArrayList<ReverseAJAXCall>();
    }
   
    /*
     * Getter for reverseAJAXCalls.
     * @return ArrayList<ReverseAJAXCall> - The ArrayList containing all ReverseAJAXCalls.
     */
    @Override
    public List<ReverseAJAXCall> getReverseAJAXCalls() {
        return this.reverseAJAXCalls;
    }
   
    /*
     * Setter for reverseAJAXCalls.
     * @param ArrayList<ReverseAJAXCall> - The ArrayList containing all ReverseAJAXCalls.
     */
    @Override
    public void setReverseAJAXCalls(final List<ReverseAJAXCall> reverseAJAXCalls){
        this.reverseAJAXCalls = reverseAJAXCalls;
    }
}
TOP

Related Classes of nz.ac.massey.softwarec.group3.reverseAJAX.ReverseAJAXManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.